const express = require('express')
const cors = require('cors')
const OSS = require('ali-oss')
const multer = require('multer')
const path = require('path')
// const { dataFix } = require('ali-oss/lib/common/utils/dataFix')
const app = express()
app.use(cors())

// 身份证
const client = new OSS({
  // yourregion填写Bucket所在地域。以华东1（杭州）为例，Region填写为oss-cn-hangzhou。
  region: 'oss-cn-beijing',
  // 阿里云账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维，请登录RAM控制台创建RAM用户。
  accessKeyId: 'LTAI5tLTTxNQceAFM9ke8QT9',
  accessKeySecret: 'y804FY8Z8nK0KDV69DC2aDCcLIAPBa',
  bucket: '2004b-demo'
})
const storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, './public/uploads')
  },
  filename: function (req, file, cb) {
    const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1e9)
    cb(null, file.fieldname + '-' + uniqueSuffix + path.extname(file.originalname))
  }
})

const upload = multer({ storage })
app.post('/api/upload', upload.single('file'), async (req, res) => {
  console.log('====================================')
  console.log(req.file.filename, 'req.file')
  console.log('====================================')
  //   try {
  // 填写OSS文件完整路径和本地文件的完整路径。OSS文件完整路径中不能包含Bucket名称。
  // 如果本地文件的完整路径中未指定本地路径，则默认从示例程序所属项目对应本地路径中上传文件。
  const result = await client.put(
    req.file.filename,
    path.normalize(path.join(__dirname, '/public/uploads/', req.file.filename))
    // 自定义headers
    //, {headers}
  )
  res.json({
    code: 200,
    msg: '上传成功',
    data: result
  })
  //   }
  //   catch (e) {
  //     res.json({
  //       code: 500,
  //       msg: '上传失败，服务器错误'
  //     })
  //   }
})
app.listen(7002, () => {
  console.log('====================================')
  console.log('listenling 7002')
  console.log('====================================')
})